<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>

</body>
<script>
  // reduce 数组归并


  var arr = [2, 8, 4, 6, 5, 7, 9, 3, 1];

  var sum = 0;
  arr.forEach(function (item, index, array) {
    sum += item;
  })
  console.log(sum);

  // arr.reduce(function(prev,item,index,array){},initValue)  数组归并
  // 遍历数组,每次循环时执行传入的回调函数,并将回调函数的结果保留 作为下一次的prev传入

  // initValue  用于指定prev的初始值
  // 如果有initValue,initValue作为Prev的初始值  数组从下标0开始遍历
  // 如果没有initValue,数组中的第一个元素UI作为prev的初始值  数组从下标1s开始遍历

  // prve 第一次是initValue,后续就是上一次回调函数执行的结果
  // item,
  // index,
  // array



  // var result = arr.reduce(function(prev,item,index,array){
  //     console.log(prev,item,index,array);
  //     return prev + item;
  // },0);

  // var result = arr.reduce(function(prev,item,index,array){
  //     console.log(prev,item,index,array);
  //     return prev + item;
  // });
  // console.log(result);


  // reduceRight 用法同reduce 倒着循环遍历
  var arr = [2, 8, 4, 6, 5, 7, 9, 3, 1];
  var result = arr.reduceRight(function (prev, item, index, array) {
    console.log(prev, item, index, array);
    return prev + item;
  }, 0);



</script>

</html>